Computer memory systems typically include one or more memory modules, such as, e.g., dynamic random access memory (DRAM), which may be readily accessed by a processor. During normal operation of the computer system, a memory controller transfers data between a data store (e.g., hard disk drive) and the memory modules, and between the memory modules and the processor. From time-to-time, all or a part of the memory modules may fail.
Memory failures may cause data to be corrupted or even lost. Some operating systems are configured to de-allocate entire “pages” of the memory modules that are associated with the failure. De-allocating memory in this manner unnecessarily reduces the amount of memory available to the processor(s), and may even cause the computer system to cease operations. More sophisticated computer systems implement erasure, wherein a specific bit or bits in the memory module which are determined to be causing the error are ignored. In other systems, a spare memory cache may implemented to replace failing or failed portions of memory modules by mapping failing portions of the memory modules to the spare memory cache. As more errors are encountered, however, the spare memory cache may be used up.